
//2444.统计定界子数组的数目
class Solution {
public:
    long long countSubarrays(vector<int>& nums, int minK, int maxK) {
        //使用两个数据来对时候存在相同的最大值和最小值进行标记
        int n=nums.size();
        int mini=-1,maxi=-1;
        long long begin=-1,ret=0;
        for(int i=0;i<n;i++)
        {
            if(nums[i]==minK) mini=i;  //修改最近一次的最小值
            if(nums[i]==maxK) maxi=i;  //修改最近一次的最大值
            if(nums[i]<minK||nums[i]>maxK) begin=i;  //对起始位置进行修改

            if(begin<min(mini,maxi)) ret+=min(mini,maxi) - begin;  //更新答案
        }            
        return ret;
    }
};